package com.soul.sort;

/**
 * 选择排序
 */
public class SelectionSort {

    public static void sort(int[] a){
        for (int i = 0; i < a.length; i++) {
            //每次都选择除去已排序下标的子数组中的最小值
            int min = selectMin(a,i,a.length);
            //将最小值与子数组初始位置进行交换
            SortUtil.swap(a,i,min);
        }
    }

    /**
     * 选择子数组中的最小值
     */
    private static int selectMin(int[] n, int i, int len) {
        int x = i;
        for (int j = i; j < len; j++) {
            if (n[x] > n[j]){
                x = j;
            }
        }
        return x;
    }
}
